在第18天有講到os模組部分,它能夠建立、刪除目錄、刪除檔案或執行作業系統命令等方法,在對於操作檔案和目錄都非常方便。當然還有一些其他Python提供的實用模組(shutil、glob),在檔案和資料的管理幫助也很大,不過今日重點會放在檔案處理的部分~
Python內建函式open()可以開啟指定檔案,以便進行檔案內容的讀取、寫入和修改。語法為:
open(filename[,mode][,encode])
上面為函式open()最常用的3個參數(filename、mode、encode),那麼來一一解釋吧!
filename為讀寫的檔案名稱,是字串型態,不可省略。可以是相對或絕對路徑,若沒設定,則會預設目前執行程式的目錄。
mode為設定檔案開啟的模式,也是字串型態。省略的話,將預設為讀取模式。通常都是用r、w、a來進行控制,如下:
直接看個例子,順帶一提,既然open是打開,那麼使用close就是關閉檔案囉。
content = '''Hello Python
你好
Welcome
'''
f = open('file1.txt', 'w') #會直接幫你建立,w寫入
f.write(content)
f.close()
這時候就可以趕快去你的.txt檔看有沒有文字輸入進去,是不是很神奇呢~
encode是指定檔案的編碼模式,一般可設定cp950或UTF-8。不過國際間通行的編碼以及許多Linux系統,預設都是使用UTF-8編碼,所以變化其實不大。
f = open('file1.txt', 'r',encoding = 'UTF-8')
...
f.close()
以下就列一些檔案處理的常見用法:
read(),會從目前指標位置,讀取指定長度的字元,若未指定長度則會讀取所有字元。
f = open('file1.txt', 'r')
s = f.read(5) #前5個字元
print(s)
f.close()
--------------------
Hello
readlines(),它會以串列方式傳回,每一列會成為串列中的一個元素。
f = open('file1.txt', 'r')
s = f.readlines()
print(s)
f.close()
---------------------
['Hello Python\n', '你好\n', 'Welcome\n']
還有一些就簡單統整一下:
方法 | 說明 |
---|---|
close() | 關閉檔案,關閉後就不能進行讀寫動作。 |
flush() | 將緩衝區的資料立即寫入檔案中,並清緩衝區。 |
read([size]) | 讀取指定長度的字元,若未指定會讀取所有字元。 |
readable() | 測試是否可讀取。 |
readlines() | 讀取所有行,傳回一個串列。 |
next() | 移動到下一行。 |
seek(0) | 將指標移到文件最前端。 |
tell() | 傳回文件目前位置。 |
write(str) | 將指定字串寫入文件中,沒有返回值。 |
writable() | 測試是否可寫入。 |
明天來實作看看吧!